﻿'######################################################################################################################################
'# CLASSE LECTURE:
'#  - Gere la lecture des elements
'######################################################################################################################################
Imports MediaPortal.Player
Imports SMC.Gestion_XML
Imports MediaPortal.GUI.Library
Imports MediaPortal.Dialogs
Imports System.ComponentModel

Public Class Lecture
    Private _Parent As Plugin

    '######################################################################################################################################
    '# Constructeur
    '######################################################################################################################################
    Public Sub New(ByVal CLASS_Param1 As Plugin)
        _Parent = CLASS_Param1

        'Creation d'un evenement sur arret de video
        AddHandler g_Player.PlayBackStopped, AddressOf EVT_Stop
        AddHandler g_Player.PlayBackEnded, AddressOf EVT_Fin
    End Sub
    '######################################################################################################################################


    '######################################################################################################################################
    '# Se produit lorsque l'utilisateur appuie sur STOP pendant la lecture d'une video
    '######################################################################################################################################
    Private Sub EVT_Stop(ByVal type As MediaPortal.Player.g_Player.MediaType, ByVal timeMovieStopped As Integer, ByVal filename As String)
        MediaPortal.GUI.Library.Log.Debug("[SMC] Gestion_XML.vb >> Execution de EVT_Stop()", "")
        Dim XML_Contenu As STRUC_XML_smc
        Dim BOOL_Fini As Boolean
        Dim BYTE_Position As System.Byte() = {}
        Dim INT_Type As Integer
        Console.WriteLine(filename)
        Console.WriteLine(_Parent.SMC_Explorer.Selection_Chemin)
        If timeMovieStopped Then
            INT_Type = _Parent.SMC_Explorer.Selection_Type
            BOOL_Fini = False
            'Si on est a plus de 90% de la video, alors on estime qu'il est fini
            If (timeMovieStopped * 100) / g_Player.Duration > 90 Then BOOL_Fini = True

            If INT_Type = 2 Or INT_Type = 3 Then g_Player.Player.GetResumeState(BYTE_Position)

            XML_Contenu = _Parent.SMC_Gestion_XML.LireElements(_Parent.SMC_Explorer.Selection_Chemin & ".smc")
            If BOOL_Fini Then
                XML_Contenu.Vu = 2
                XML_Contenu.Position = -1
                XML_Contenu.DVDPosition = ""
                XML_Contenu.Duree = -1
            Else
                XML_Contenu.Vu = 1
                XML_Contenu.Position = timeMovieStopped
                If INT_Type = 2 Or INT_Type = 3 Then
                    XML_Contenu.DVDPosition = Convert.ToBase64String(BYTE_Position)
                Else
                    XML_Contenu.DVDPosition = ""
                End If
                XML_Contenu.Duree = Math.Round(g_Player.Duration)
            End If
            _Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).Vu = XML_Contenu.Vu
            _Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).Position = XML_Contenu.Position
            _Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).DVDPosition = XML_Contenu.DVDPosition
            _Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).Duree = XML_Contenu.Duree
            _Parent.SMC_Gestion_XML.EcrireElements(_Parent.SMC_Explorer.Selection_Chemin & ".smc", XML_Contenu)
        End If
    End Sub
    '######################################################################################################################################

    '######################################################################################################################################
    '# Se produit lorsque la video est terminee
    '######################################################################################################################################
    Private Sub EVT_Fin(ByVal type As MediaPortal.Player.g_Player.MediaType, ByVal filename As String)
        MediaPortal.GUI.Library.Log.Debug("[SMC] Gestion_XML.vb >> Execution de EVT_Fin()", "")
        Dim XML_Contenu As STRUC_XML_smc
        XML_Contenu = _Parent.SMC_Gestion_XML.LireElements(filename & ".smc")
        XML_Contenu.Vu = 2
        _Parent.SMC_Gestion_XML.EcrireElements(filename & ".smc", XML_Contenu)
        _Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).Vu = 2
    End Sub
    '######################################################################################################################################

    '######################################################################################################################################
    '# Lire un DVD repertoire
    '######################################################################################################################################
    Public Sub LECTURE_Dvd_Repertoire(ByVal STR_PARAM1 As String, ByVal BOOL_PARAM2 As Integer)
        MediaPortal.GUI.Library.Log.Debug("[SMC] Gestion_XML.vb >> Execution de LECTURE_Dvd_Repertoire()", "")
        Dim DLG_PROGRESSION As GUIDialogProgress

        DLG_PROGRESSION = GUIWindowManager.GetWindow(GUIWindow.Window.WINDOW_DIALOG_PROGRESS)
        DLG_PROGRESSION.SetHeading(_Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).Nom)
        DLG_PROGRESSION.SetLine(1, "Chargement en cours")
        DLG_PROGRESSION.SetLine(2, "")
        DLG_PROGRESSION.SetLine(3, "")
        DLG_PROGRESSION.SetLine(4, "")
        DLG_PROGRESSION.StartModal(GUIWindowManager.ActiveWindow)
        DLG_PROGRESSION.SetPercentage(0)
        DLG_PROGRESSION.Progress()
        DLG_PROGRESSION.ShowProgressBar(True)

        g_Player.PlayDVD(_Parent.SMC_Explorer.Selection_Chemin & "\VIDEO_TS\VIDEO_TS.IFO")
        If BOOL_PARAM2 = 0 Then g_Player.Player.SetResumeState(Convert.FromBase64String(_Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).DVDPosition))
        g_Player.ShowFullScreenWindow()
        DLG_PROGRESSION.Close()
    End Sub
    '######################################################################################################################################

    '######################################################################################################################################
    '# Lire un DVD iso
    '######################################################################################################################################
    Public Sub LECTURE_Dvd_Iso(ByVal STR_PARAM1 As String, ByVal BOOL_PARAM2 As Integer)
        MediaPortal.GUI.Library.Log.Debug("[SMC] Gestion_XML.vb >> Execution de LECTURE_Dvd_Iso()", "")
        Dim DLG_PROGRESSION As GUIDialogProgress

        DLG_PROGRESSION = GUIWindowManager.GetWindow(GUIWindow.Window.WINDOW_DIALOG_PROGRESS)
        DLG_PROGRESSION.SetHeading(_Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).Nom)
        DLG_PROGRESSION.SetLine(1, "Chargement en cours")
        DLG_PROGRESSION.SetLine(2, "")
        DLG_PROGRESSION.SetLine(3, "")
        DLG_PROGRESSION.SetLine(4, "")
        DLG_PROGRESSION.StartModal(GUIWindowManager.ActiveWindow)
        DLG_PROGRESSION.SetPercentage(0)
        DLG_PROGRESSION.Progress()
        DLG_PROGRESSION.ShowProgressBar(True)

        MediaPortal.Util.DaemonTools.Mount(_Parent.SMC_Explorer.Selection_Chemin, MediaPortal.Util.DaemonTools.GetVirtualDrive)
        g_Player.PlayDVD(_Parent.SMC_Explorer.Selection_Chemin)
        If BOOL_PARAM2 = 0 Then g_Player.Player.SetResumeState(Convert.FromBase64String(_Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).DVDPosition))
        g_Player.ShowFullScreenWindow()
        DLG_PROGRESSION.Close()
    End Sub
    '######################################################################################################################################

    '######################################################################################################################################
    '# Lire un DivX Fichier
    '######################################################################################################################################
    Public Sub LECTURE_DivX(ByVal STR_PARAM1 As String, ByVal BOOL_PARAM2 As Integer)
        MediaPortal.GUI.Library.Log.Debug("[SMC] Gestion_XML.vb >> Execution de LECTURE_DivX()", "")
        Dim DLG_PROGRESSION As GUIDialogProgress

        DLG_PROGRESSION = GUIWindowManager.GetWindow(GUIWindow.Window.WINDOW_DIALOG_PROGRESS)
        DLG_PROGRESSION.SetHeading(_Parent.SMC_Explorer.VideoElements(_Parent.SMC_Explorer.INT_Fichier_PositionAbsolue).Nom)
        DLG_PROGRESSION.SetLine(1, "Chargement en cours")
        DLG_PROGRESSION.SetLine(2, "")
        DLG_PROGRESSION.SetLine(3, "")
        DLG_PROGRESSION.SetLine(4, "")
        DLG_PROGRESSION.StartModal(GUIWindowManager.ActiveWindow)
        DLG_PROGRESSION.SetPercentage(0)
        DLG_PROGRESSION.Progress()
        DLG_PROGRESSION.ShowProgressBar(True)

        g_Player.PlayDVD(_Parent.SMC_Explorer.Selection_Chemin)
        If BOOL_PARAM2 = 0 Then g_Player.SeekAbsolute(_Parent.SMC_Explorer.Selection_Position)
        g_Player.ShowFullScreenWindow()
        DLG_PROGRESSION.Close()
    End Sub
    '######################################################################################################################################

End Class
